require("oo")

class_definition = 
{
    -- constructor 
    construct = function(self, arg1, arg2, arg3)
        --print(self, arg1, arg2, arg3)
        self.num = 3
        self.text = "hello"
    end,

    -- method definitions
    f = function(self, x) 
        --print(self)
        return x * self.num 
    end,

    -- static members
    num2 = 5,
    text2 = "hello2",
}

A = oo.class("A", class_definition)

a = oo.new(A, 1, "a", 3)
aa = oo.new(A)
print(a:f(3))
print(a.num2)
a.num2 = 33
print(aa.num2)
